#pragma once 

#include "Misc/EngineEditorMacros.h"
#include "Object/Object.h"
#include "EditorAbilityViewModel.m.h"

class RTexture2D;
class REditorAbilityModel;
class REditorOperationViewModel;

RCLASS()
class REditorAbilityViewModel : public RObject
{
    ROBJECT

public:
    virtual void BindModel(TSharedObjectPtr<REditorAbilityModel> InModel) ;
    virtual TSharedObjectPtr<RTexture2D> GetIcon() const {assert(false); return nullptr; }
    virtual TSharedObjectPtr<RTexture2D> GetHighlightIcon() const {assert(false); return nullptr; }

    float GetWidth() const ;
    void SetWidth(float InWidth) ;

    float GetHeight() const ;
    void SetHeight(float InHeight) ;

    bool IsExpanded() const ;
    void ToggleIsExpanded() ;

    CString GetName() const;
    
    TSharedObjectPtr<REditorAbilityModel> GetBaseModel();
protected:
    TWeakObjectPtr<REditorAbilityModel> BaseModel;

public:
    //size of button in ability title
    const float OperationInterval = 1.0f;
    const float OperationButtonSize = 24.0f;
    const float OperationButtonImageSize = 20.f;
protected:


};